💡 AI 인사이트

🤖 AI가 여기에 결과를 출력합니다...

댓글 커뮤니티

쿠팡이벤트

이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.

검색

    로딩 중이에요... 🐣

    [코담] 웹개발·실전 프로젝트·AI까지, 파이썬·장고의 모든것을 담아낸 강의와 개발 노트

    03 쿠키커터 djoser ninja | ✅ 편저: 코담 운영자

    Cookiecutter + Djoser + Django Ninja를 활용한 Django 백엔드 프로젝트 시작 방법

    이 문서는 Cookiecutter 템플릿을 활용하여 Django 프로젝트를 초기화하고, 해당 프로젝트에 Djoser 및 Django Ninja를 결합하여 API 인증 및 라우팅 기능을 구축하는 방법을 설명합니다.


    1. Cookiecutter Django 프로젝트 시작하기

    1.1 Cookiecutter 설치

    pip install cookiecutter
    

    1.2 공식 Django Cookiecutter 템플릿 사용하여 생성

    cookiecutter https://github.com/cookiecutter/cookiecutter-django
    

    1.3 템플릿 설정 시 선택 예시

    project_name: myproject
    ...
    use_docker: y
    cloud_provider: None
    mail_service: mailgun
    use_async: n
    

    1.4 프로젝트 디렉터리로 이동 후 의존성 설치 및 초기화

    cd myproject
    make install
    make migrate
    make createsuperuser
    

    2. Djoser 설치 및 설정 (JWT 인증 제공)

    2.1 Djoser 및 JWT 관련 패키지 설치

    pip install djoser djangorestframework-simplejwt
    

    2.2 settings.py 설정 추가

    INSTALLED_APPS += [
        'rest_framework',
        'rest_framework.authtoken',
        'djoser',
    ]
    
    REST_FRAMEWORK = {
        'DEFAULT_AUTHENTICATION_CLASSES': (
            'rest_framework_simplejwt.authentication.JWTAuthentication',
        ),
    }
    
    from datetime import timedelta
    SIMPLE_JWT = {
        'ACCESS_TOKEN_LIFETIME': timedelta(minutes=30),
        'REFRESH_TOKEN_LIFETIME': timedelta(days=1),
    }
    

    2.3 urls.py 설정

    from django.urls import path, include
    
    urlpatterns = [
        ...
        path('auth/', include('djoser.urls')),
        path('auth/', include('djoser.urls.jwt')),
    ]
    

    3. Django Ninja 설치 및 API 설정

    3.1 설치

    pip install django-ninja
    

    3.2 api/api.py 생성

    from ninja import NinjaAPI
    from django.contrib.auth.models import User
    from pydantic import BaseModel
    
    api = NinjaAPI()
    
    class UserOut(BaseModel):
        id: int
        username: str
    
    @api.get("/users", response=list[UserOut])
    def list_users(request):
        return list(User.objects.all())
    

    3.3 urls.py에 연결

    from django.urls import path
    from .api import api
    
    urlpatterns = [
        path("api/", api.urls),
    ]
    

    4. 전체 디렉터리 구조 예시 (중요 파일 기준)

    myproject/
    ├── config/
    │   └── settings.py
    ├── api/
    │   └── api.py
    ├── requirements.txt
    └── manage.py
    

    ✅ 정리

    • Cookiecutter로 빠르게 Django 프로젝트 구성 가능
    • Djoser로 JWT 기반 사용자 인증 시스템 구축
    • Django Ninja로 타입 안전하고 강력한 API 라우팅 지원

    다음 단계: Next.js 15 설치 및 Django 백엔드와의 연동 방법 설명은 다음 캔버스에서 이어집니다.

    TOP
    preload preload